import http from '@/utils/http'

/**
 * 医生个人信息更新请求类型定义
 */
export interface DoctorProfileRequest {
  /**
   * 医生唯一标识ID,只传需要修改的信息
   */
  id: number;
  /**
   * 真实姓名
   */
  name?: string;
  /**
   * 职称
   */
  title?: string;
  /**
   * 科室
   */
  department?: string;
  /**
   * 医院
   */
  hospital?: string;
  /**
   * 手机号
   */
  phone?: string;
  /**
   * 邮箱
   */
  email?: string;
  /**
   * 性别：0-男，1-女
   */
  sex?: string;
  /**
   * 年龄
   */
  age?: number;
  /**
   * 个人简介
   */
  introduction?: string;
  /**
   * 专长
   */
  goodAt?: string;
  [property: string]: any;
}

/**
 * 头像上传请求类型定义
 */
export interface AvatarUploadDTO {
  file: File | Blob  // 头像文件，使用FormData格式上传
  [property: string]: any
}

/**
 * API响应类型定义
 */
import type { DoctorProfile } from '@/types/doctor';

export interface DoctorProfileResponse {
  status: number;
  message?: string;
  data: DoctorProfile;
}

/**
 * 获取医生个人信息
 * @returns Promise<DoctorProfileResponse>
 */
export const getDoctorProfile = (): Promise<DoctorProfileResponse> => {
  return http({
    url: '/doctor/account/profile',
    method: 'GET'
  })
}

/**
 * 更新医生个人信息
 * @param data 医生信息更新请求
 * @returns Promise<DoctorProfileResponse>
 */
export const updateDoctorProfile = (data: DoctorProfileRequest): Promise<DoctorProfileResponse> => {
  return http({
    url: '/doctor/account/profile',
    method: 'PUT',
    data
  })
}

/**
 * 上传医生头像
 * @param data 头像上传请求
 * @returns Promise<DoctorProfileResponse>
 */
export const uploadAvatar = (data: AvatarUploadDTO): Promise<DoctorProfileResponse> => {
  // 创建FormData对象
  const formData = new FormData()
  formData.append('file', data.file)

  return http({
    url: '/doctor/account/avatar',
    method: 'PUT',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}
